<?xml version="1.0" encoding="UTF-8" ?>

<!--
Document   : convertAEA2CSV.xsl
Created on : 1. August 2007, 16:58
Author     : jtrapp
Description:
Purpose of transformation follows.
-->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<!-- TODO customize transformation rules 
syntax recommendation http://www.w3.org/TR/xslt 
-->


<xsl:variable name="newline"><xsl:text>
</xsl:text></xsl:variable>
<xsl:variable name="tab"><xsl:text>&#x09;</xsl:text></xsl:variable>


<xsl:template match="/">Campaign<xsl:value-of select="$tab"/>Campaign Daily Budget(EUR)<xsl:value-of select="$tab"/>Ad Group<xsl:value-of select="$tab"/>Report Type<xsl:value-of select="$tab"/>Max Content CPC(EUR)<xsl:value-of select="$tab"/>Max CPC(EUR)<xsl:value-of select="$tab"/>Minimum Bid(EUR)<xsl:value-of select="$tab"/>Keyword Type<xsl:value-of select="$tab"/>Keyword<xsl:value-of select="$tab"/>Headline<xsl:value-of select="$tab"/>Description Line 1<xsl:value-of select="$tab"/>Description Line 2<xsl:value-of select="$tab"/>Display URL<xsl:value-of select="$tab"/>Destination URL<xsl:value-of select="$tab"/>Campaign Status<xsl:value-of select="$tab"/>AdGroup Status<xsl:value-of select="$tab"/>Creative Status<xsl:value-of select="$tab"/>Keyword Status<xsl:value-of select="$newline"/>
<xsl:apply-templates select="ae-data"/>
</xsl:template>

<xsl:template match="ae-data"><xsl:apply-templates select="accounts"/></xsl:template>

<xsl:template match="*"> <xsl:value-of select="name()"/> :
<xsl:apply-templates select="*"/>
</xsl:template>

<xsl:template match="accounts"><xsl:apply-templates select="account"/></xsl:template>

<xsl:template match="account"><xsl:apply-templates select="campaigns"/></xsl:template>

<xsl:template match="campaigns"><xsl:apply-templates select="campaign"/></xsl:template> 


<xsl:template match="campaign">
<xsl:variable name="campaign-data"><xsl:value-of select="campaign-data/name"/><xsl:value-of select="$tab"/><xsl:value-of select="number(campaign-data/dailyBudget) div 1000000"/></xsl:variable>
<xsl:variable name="campaign-status"><xsl:call-template name="activator"><xsl:with-param name="status" select="campaign-data/status"/></xsl:call-template></xsl:variable>
<xsl:apply-templates select="criteria" mode="campaign-criteria">
<xsl:with-param name="campaign-data"><xsl:value-of select="$campaign-data"/></xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates select="adgroups">
<xsl:with-param name="campaign-data"><xsl:value-of select="$campaign-data"/></xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<xsl:template match="criteria" mode="campaign-criteria"><xsl:param name="campaign-data"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="keywords" mode="campaign-criteria">
<xsl:with-param name="campaign-keyword-data">
<xsl:value-of select="$campaign-data"/><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:text>Keyword</xsl:text><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:text>Campaign Negative</xsl:text>
</xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<xsl:template match="keywords" mode="campaign-criteria"><xsl:param name="campaign-keyword-data"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="keyword" mode="campaign-criteria">
<xsl:with-param name="campaign-keyword-data"><xsl:value-of select="$campaign-keyword-data"/>
</xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template> 

<xsl:template match="keyword" mode="campaign-criteria">
<xsl:param name="campaign-keyword-data"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="keyword-data"  mode="campaign-criteria">
<xsl:with-param name="campaign-keyword-data"><xsl:value-of select="$campaign-keyword-data"/></xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>    

<xsl:template match="keyword-data" mode="campaign-criteria">
<xsl:param name="campaign-keyword-data"/><xsl:param name="campaign-status"/>
<xsl:value-of select="$campaign-keyword-data"/><xsl:value-of select="$tab"/>
<xsl:value-of select="text"/><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$campaign-status"/><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$newline"/>
</xsl:template>   


<xsl:template match="adgroups">
<xsl:param name="campaign-data"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="adgroup">
<xsl:with-param name="campaign-data">
<xsl:value-of select="$campaign-data"/>
</xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template> 

<xsl:template match="adgroup">
<xsl:param name="campaign-data"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="creatives">
<xsl:with-param name="adgroup-head"><xsl:value-of select="$campaign-data"/><xsl:value-of select="$tab"/>
<xsl:value-of select="adgroup-data/name"/>
</xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param></xsl:apply-templates>
<xsl:apply-templates select="criteria">
<xsl:with-param name="adgroup-head"><xsl:value-of select="$campaign-data"/><xsl:value-of select="$tab"/>
<xsl:value-of select="adgroup-data/name"/>
</xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param></xsl:apply-templates>
</xsl:template>

<xsl:template match="creatives">
<xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="textads">
<xsl:with-param name="adgroup-head"><xsl:value-of select="$adgroup-head"/>
    </xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param></xsl:apply-templates>
</xsl:template>

<xsl:template match="textads">
<xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="textad">
<xsl:with-param name="adgroup-head"><xsl:value-of select="$adgroup-head"/>
</xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<xsl:template match="textad">
<xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="textad-data">
<xsl:with-param name="adgroup-head"><xsl:value-of select="$adgroup-head"/>
</xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<xsl:template match="textad-data">
<xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/>
<xsl:value-of select="$adgroup-head"/><xsl:value-of select="$tab"/>
<xsl:text>Ad Text</xsl:text><xsl:value-of select="$tab"/>
<xsl:value-of select="number(../../../../adgroup-data/maxContentCpc) div 1000000"/><xsl:value-of select="$tab"/>
<xsl:value-of select="number(../../../../adgroup-data/maxCpc) div 1000000"/><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="headline"/><xsl:value-of select="$tab"/>
<xsl:value-of select="description1"/><xsl:value-of select="$tab"/>
<xsl:value-of select="description2"/><xsl:value-of select="$tab"/>
<xsl:value-of select="displayUrl"/><xsl:value-of select="$tab"/>
<xsl:value-of select="destinationUrl"/><xsl:value-of select="$tab"/>
<xsl:value-of select="$campaign-status"/><xsl:value-of select="$tab"/>
<xsl:call-template name="activator"><xsl:with-param name="status"  select="../../../../adgroup-data/status"/></xsl:call-template>
<xsl:value-of select="$tab"/>
<xsl:call-template name="activator"><xsl:with-param name="status"  select="status"/></xsl:call-template><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$newline"/>
</xsl:template>  

<xsl:template match="criteria"><xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/>
<xsl:apply-templates select="keywords">
<xsl:with-param name="keyword-negative">
<xsl:value-of select="@negative"/>
</xsl:with-param>
<xsl:with-param name="adgroup-head"><xsl:value-of select="$adgroup-head"/>
</xsl:with-param><xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<xsl:template match="keywords" ><xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/><xsl:param name="keyword-negative"/>
<xsl:apply-templates select="keyword">
<xsl:with-param name="adgroup-head"><xsl:value-of select="$adgroup-head"/></xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
<xsl:with-param name="keyword-negative"><xsl:value-of select="$keyword-negative"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template> 

<xsl:template match="keyword">
<xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/><xsl:param name="keyword-negative"/>
<xsl:apply-templates select="keyword-data">
<xsl:with-param name="adgroup-head"><xsl:value-of select="$adgroup-head"/></xsl:with-param>
<xsl:with-param name="campaign-status"><xsl:value-of select="$campaign-status"/></xsl:with-param>
<xsl:with-param name="keyword-negative"><xsl:value-of select="$keyword-negative"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>    

<xsl:template match="keyword-data">
<xsl:param name="adgroup-head"/><xsl:param name="campaign-status"/><xsl:param name="keyword-negative"/>
<xsl:value-of select="$adgroup-head"/><xsl:value-of select="$tab"/>
<xsl:text>Keyword</xsl:text><xsl:value-of select="$tab"/>
<xsl:if test="maxContentCpc"><xsl:value-of select="number(maxContentCpc) div 1000000"/></xsl:if><xsl:value-of select="$tab"/>
<xsl:if test="number(maxCpc)>0"><xsl:value-of select="number(maxCpc) div 1000000"/></xsl:if><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:choose><xsl:when test="$keyword-negative='true' or $keyword-negative='True' ">Negative</xsl:when><xsl:otherwise><xsl:value-of select="type"/></xsl:otherwise></xsl:choose><xsl:value-of select="$tab"/>
<xsl:value-of select="text"/><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:value-of select="destinationUrl"/><xsl:value-of select="$tab"/>
<xsl:value-of select="$campaign-status"/><xsl:value-of select="$tab"/>
<xsl:call-template name="activator"><xsl:with-param name="status"  select="../../../../adgroup-data/status"/></xsl:call-template><xsl:value-of select="$tab"/>
<xsl:value-of select="$tab"/>
<xsl:call-template name="activator2"><xsl:with-param name="paused"  select="paused"/></xsl:call-template><xsl:value-of select="$tab"/>

<xsl:value-of select="$newline"/>
</xsl:template>  


<xsl:template name="activator">
    <xsl:param name="status"/>
<xsl:choose><xsl:when test="$status='Enabled' or $status='enabled' or $status='Active' or $status='active'">Active</xsl:when><xsl:when test="$status='Deleted' or $status='deleted'">Deleted</xsl:when><xsl:when test="$status='Paused' or $status='paused'">Paused</xsl:when><xsl:otherwise>???<xsl:value-of select="$status"/></xsl:otherwise></xsl:choose>
</xsl:template>

<xsl:template name="activator2">
    <xsl:param name="paused"/>
<xsl:choose><xsl:when test="$paused='false' or $paused='False' or $paused='FALSE' or $paused='yes' or $paused='Yes' or $paused='ja' or $paused='Ja'">Active</xsl:when><xsl:when test="$paused='True' or $paused='true' or $paused='yes' or $paused='Yes' or $paused='YES'">Paused</xsl:when><xsl:otherwise>???</xsl:otherwise></xsl:choose>
</xsl:template>

</xsl:stylesheet>
